package top.lyc829.mymusic.model.bean

import com.google.gson.annotations.SerializedName
import top.lyc829.mymusic.util.Const

/**
 * @Author lyc
 * @create 2021-07-17 23:05
 */
data class PlayListResult(
    val code: Int,
    val playlist: Playlist,
//    val privileges: List<Privilege>,
//    val relatedVideos: Any,
//    val sharedPrivilege: Any,
    val urls: String?
)

/**
 * 歌单广场的Result
 */
data class TopPlayListResult(
    val cat: String = Const.CATEGORY_ALL,
    val code: Int = 200,
    val more: Boolean = false,
    val total: Long = 0,
    @SerializedName("playlists")
    val playList: List<PlayListSimple>
)

data class Playlist(
    val adType: Int,
    val backgroundCoverId: Long,
    val backgroundCoverUrl: String,
    val cloudTrackCount: Int,
    val commentCount: Long,
    val commentThreadId: String,
    val coverImgId: Long,
    val coverImgId_str: String,
    val coverImgUrl: String,
    val createTime: Long,
    val creator: User,
    val description: String,
    val englishTitle: String,
    val highQuality: Boolean,
//    val historySharedUsers: Long,
    val id: Long,
    val name: String,
    val newImported: Boolean,
//    val officialPlaylistType: Any,
    val opRecommend: Boolean,
    val ordered: Boolean,
    val playCount: Long,
    val privacy: Int,
//    val remixVideo: Any,
    val shareCount: Long,
//    val sharedUsers: Any,
    val specialType: Int,
    val status: Int,
    val subscribed: Boolean,
    val subscribedCount: Long,
    val subscribers: List<User>,
    val tags: List<String>,
    val titleImage: Long,
    val titleImageUrl: String,
    val trackCount: Int,
    val trackIds: List<TrackId>,
    val trackNumberUpdateTime: Long,
    val trackUpdateTime: Long,
//    val tracks: List<Track>,
//    val updateFrequency: Any,
    val updateTime: Long,
    val userId: Int,
//    val videoIds: Any,
//    val videos: Any
)

data class Privilege(
    val chargeInfoList: List<ChargeInfo>,
    val cp: Int,
    val cs: Boolean,
    val dl: Int,
    val downloadMaxbr: Int,
    val fee: Int,
    val fl: Int,
    val flag: Int,
    val freeTrialPrivilege: FreeTrialPrivilege,
    val id: Int,
    val maxbr: Int,
    val paidBigBang: Boolean,
    val payed: Int,
    val pc: Any,
    val pl: Int,
    val playMaxbr: Int,
    val preSell: Boolean,
    val realPayed: Int,
    val rscl: Any,
    val sp: Int,
    val st: Int,
    val subp: Int,
    val toast: Boolean
)


data class TrackId(
    val id: Long
)

data class ChargeInfo(
    val chargeMessage: Any,
    val chargeType: Int,
    val chargeUrl: Any,
    val rate: Int
)

data class FreeTrialPrivilege(
    val resConsumable: Boolean,
    val userConsumable: Boolean
)